import router from '@/router';
import store from '@/store';
import { getToken } from '@/utils/auth';
import getPageTitle from '@/utils/get-page-title';

const blcakList = []; // redirect blacklist

router.beforeEach((to, from, next) => {
    const nextHandler = (options) => {
        if (options) {
            next(options);
        } else {
            next();
        }
    };

    document.title = getPageTitle(to.meta.title); // 切换网站标题

    const hasToken = getToken();

    if (!hasToken && blcakList.indexOf(to.path) !== -1) { // 这里是未登录状态进入黑名单页面, 重定向到404
        nextHandler({ path: '/404', replace: true });
        return;
    }

    if (hasToken) {
        if (to.path === '/login') { // 在登录状态下去登录页面, 重定向到首页
            nextHandler({ path: '/' });
            return;
        }

        if (store.getters.nickname) { // 这里以用户昵称为条件判断是否已经获取了用户信息
            nextHandler();
            return;
        }
        try { // 这里是判断到没有用户信息,尝试获取用户信息
            store.dispatch('account/userInfoAction');
        } catch (error) { // 获取用户信息失败, 退出登录重定向到登录页面重新登录
            store.dispatch('account/logoutAction');
            nextHandler(`/login?redirect=${to.path}`);
            return;
        }
    }
    nextHandler(); // 理论上不登录除了黑名单哪里都可以去
});

router.afterEach(() => {

});
